package tech.aistar.day06;

/**
 * 本类用来演示:
 *
 * @author: success
 * @date: 2022/7/25 10:52 上午
 */
@FunctionalInterface // 函数式接口 - 只能包含一个抽象方法
public interface FunInterfaceDemo {

    void test(int x,int y);

    default void add(){
        System.out.println("普通方法");
    }
}
class FunTest{
    public static void main(String[] args) {
        //1. 匿名内部类 - 语法比较臃肿.
        //FunInterfaceDemo demo1 = new FunInterfaceDemo() {
        //    @Override
        //    public void test() {
        //        System.out.println("test..匿名内部类!");
        //    }
        //};

        //2. jdk8.0 - 函数式接口 + lambda表达式 替代臃肿的匿名内部类的写法

        //2-1. 代码块中只有一行语句,{}是可以省略不写的
        //FunInterfaceDemo demo2 = ()->System.out.println("lambda表达式");
        //demo2.test();

        //2-2. 方法带有一个参数的
        //FunInterfaceDemo demo3 = x -> {
        //    System.out.println("lambda表达式");
        //    System.out.println("lambda表达式-x参数:"+x);
        //};
        //demo3.test(100);

        //2-2. 俩参 - ()不能省略
        FunInterfaceDemo demo3 = (x,y) -> {
            System.out.println("lambda表达式");
            System.out.println("lambda表达式-x参数:"+x+":"+y);
        };
        demo3.test(100,200);
    }
}
